import java.util.Timer;
import java.util.TimerTask;

//定时器使用
public class Demo22 {
    public static void main(String[] args) {
        Timer timer = new Timer();
        // 给 timer 中注册的这个任务, 不是在调用 schedule的线程中执行的. 而是通过Timer内部的线程, 来负责执行的.
        //并且这个线程是后台线程
        //单次执行的任务
        //schedule(TimerTask task, long delay): 在指定的延迟（毫秒）后执行 TimerTask
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("hello 1");
            }
        }, 3000);

        // 重复执行的任务 (周期性任务)
        //在指定的延迟（毫秒）后首次执行 TimerTask，然后每隔 period 毫秒重复执行一次。
        //注意：period 是任务 开始执行 的间隔时间。如果任务执行时间超过 period，那么下一次任务会在上一次任务 结束后 period 毫秒才开始。 这被称为 固定延迟 (fixed-delay) 调度
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("hello 2");
            }
        }, 3000, 3000);

        //scheduleAtFixedRate(TimerTask task, long delay, long period):
        // 在指定的延迟（毫秒）后首次执行 TimerTask，然后每隔 period 毫秒 以固定速率 重复执行一次。
        // 注意：period 是任务 计划开始 的间隔时间。
        // 如果任务执行时间超过 period，那么下一次任务的 计划开始时间 不会改变，但实际执行时间可能会延迟到上一次任务结束后立即开始。
        // 这被称为 固定速率 (fixed-rate) 调度。
    }
}
